home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 22 / Amiga Format AFCD22 (Jan 1998, Issue 106).iso / -readerstuff- / d_keletsekis / tools / fastread / runner.rexx < prev    next >
OS/2 REXX Batch file  |  1997-10-03  |  3KB  |  95 lines

  1.  
  2. /* For instructions on what this topic is for, and how to use it, you
  3. should have read the first topic in this database.  Once you have
  4. confirmed that this FULL version works, you may prefer to use the SLIM
  5. version instead. It does the same job, but is a quarter the size, and
  6. may run slightly faster.    */
  7.  
  8. /* Runner.rexx builds a new program called Ram:patch.rexx from the
  9.    relevant patch of the current FastRead screen, and then runs it. */
  10.  
  11. /* Runner.rexx must be run in a CLI window. A click on the [ Macro ]
  12.    button will see to all of that automatically if you have followed
  13.    the instructions in Topic 1.       */
  14.  
  15. /* We need 'rexxsupport.library' to be online. If it is not already
  16.    so, we try to add it.  */
  17.  
  18.    if ~show("L",'rexxsupport.library') then
  19.       call AddLib('rexxsupport.library',0,-30,0)
  20.  
  21. /* If that fails (e.g. because the library doesn't exist), a system
  22.    error message will appear, and the program will end abruptly.
  23.  
  24.    Hint : If you put the next line in your startup-sequence
  25.       RXLIB rexxsupport.library 0 -30 0
  26.    then the library will always be online, and you could remove the 
  27.    pair of lines above which do the check, and/or remove the similar 
  28.    entry from the SLIM version of  Runner.rexx. */
  29.  
  30. olddir = pragma('d','ram:')      /* Set current directory to Ram:  */
  31.  
  32. /* Clean out previous version */
  33.    if exists('patch.rexx') then b = delete('patch.rexx')
  34.  
  35. /* Check that we have a 'guide.txt'  */
  36. if ~(exists('guide.txt')) then do
  37.    say 'Guide.txt not found.' ; exit
  38.    end
  39.  
  40. /* All checks completed.  We can start ... */
  41.  
  42. op = open(gt,'guide.txt','r') 
  43. startfound = 0
  44.  
  45. /* Find the first line of the example. It expects a comment line
  46.   containing " Example ",  and will keep on looking until it finds
  47.   it, or end-of-file is true. */
  48.  
  49. do until (startfound) | (eof(gt))
  50.   rd = readln(gt) 
  51.   startfound = (index(rd,'/* Example */') ~= 0)
  52.   end
  53.  
  54. /* No example found? */
  55. if ~startfound then do
  56.     cl = close(gt) 
  57.     say 'No example in this topic'
  58.     exit
  59.     end
  60.  
  61. /* Okay. We've found an example. We're going to save that first
  62.    line - the one we've just found - and the following lines to
  63.    'patch.rexx'.*/
  64.  
  65.     op = open(ap,'patch.rexx','w') 
  66.     wr = writeln(ap,rd)
  67.     endfound = 0
  68.  
  69. /* Read until end-of-file. That assumes that the examples are at
  70.    the end of the topic which includes them, which they are! */
  71.    do forever
  72.         rd = readln(gt)
  73.         if eof(gt) then leave
  74.         wr = writeln(ap,rd)
  75.         end
  76.  
  77. /* Close the source file and the destination file. */
  78.     cl = close(ap) ; cl = close(gt)
  79.  
  80. /* Wait for all the above to come to a tidy conclusion. There is no
  81. point continuing until the new 'patch.rexx' exists and is ready to
  82. use. Any previously existing version of 'patch.rexx' has already been
  83. deleted precisely so that this check can be made before continuing.
  84.  */
  85. do until exists('patch.rexx') 
  86.    call delay(1)             /* About 0.02 of a second */
  87.    end
  88.  
  89. /* Run the new program */
  90. address command 'sys:rexxc/rx ram:patch.rexx'
  91.  
  92. /* Reset directory to original */
  93. call pragma('d',olddir)
  94.     
  95.